package com.github.xuemingyu.springboot.acticitycloud.entity.vo;

import com.bidanet.bdcms.core.bean.EntityToVo;
import com.bidanet.bdcms.core.common.SpringWebTool;
import com.github.xuemingyu.springboot.acticitycloud.dao.SakuraEntryFormDao;
import com.github.xuemingyu.springboot.acticitycloud.driver.dingtalk.DingTalkService;
import com.github.xuemingyu.springboot.acticitycloud.entity.Activity;
import com.github.xuemingyu.springboot.acticitycloud.entity.enumEntity.AcType;
import com.github.xuemingyu.springboot.acticitycloud.entity.enumEntity.ActivityStatus;
import com.github.xuemingyu.springboot.acticitycloud.entity.enumEntity.AuditStatus;
import com.github.xuemingyu.springboot.acticitycloud.entity.enumEntity.SignType;
import com.taobao.api.ApiException;
import lombok.Data;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils;

@Data
public class AuditVo implements EntityToVo {
    private Long activityId;
    /**
     * 活动主题
     */
    private String activityTitle;
    /**
     * 图片URL
     */
    private String activityFile;
    /**
     * 活动类型
     */
    private String activityType;
    /**
     * 活动状态：待发布、预热、报名中、进行中、已结束
     */
    private ActivityStatus activityStatus;
    /**
     * 活动地点
     */
    private String activityAddr;
    /**
     * 已报名人数
     */
    private Long activityPersnNow;
    /**
     * 报名上限人数
     */
    private Long activityPersMax;
    /**
     * 报名开始时间
     */
    private String signStart;
    /**
     * 报名截止时间
     */
    private String signEnd;
    /**
     * 活动开始时间
     */
    private String activityStart;
    /**
     * 活动结束时间
     */
    private String activityEnd;
    /**
     * 置顶时间
     */
    private String topTime;
    /**
     * 发布时间
     */
    private String approveTime;
    /**
     * 创建人
     */
    private String createUser;
    /**
     * 创建人类型
     */
    private String createUserType;
    /**
     * 创建时间
     */
    private String createTime;
    /**
     * 最后修改人
     */
    private String updateUser;
    /**
     * 最后修改时间
     */
    private String updateTime;
    /**
     * 报名表模板id
     */
    private Long modelId;
    /**
     * 是否创建钉钉群
     */
    private String isDing;
    /**
     * 签到配置
     */
    private String addrSign;
    /**
     * 活动详情
     */
    private String activityVemo;
    /**
     * 报名范围
     */
    private String activityOrgs;
    /**
     * 删除标记
     */
    private boolean deleteTag;
    /**
     * 钉钉userId
     */
    private String userId;
    /**
     * 置顶状态
     */
    private Boolean isTop;
    /**
     * 是否取消发布
     */
    private Boolean isCancel;
    /**
     * 取消发布备注
     */
    private String remark;

    private String cancelTime;

    /**
     * 是否需要报名表
     */
    private Boolean isSignUp;
    /**
     * 报名表字段
     */
    private String SignField;
    /**
     * 是否需要签到
     */
    private Boolean isSignIn;
    /**
     * 签到方式
     */
    private SignType signType;

    /**
     * 签到地点
     */
    private String signSite;
    /**
     * 签到有效距离
     */
    private Long distance;
    /**
     * 活动类型
     */
    private AcType acType;
    /**
     * 审核状态
     */
    private AuditStatus auditStatus;

    /**
     * 审核人
     */
    private String auditName;
    /**
     * 审核时间
     */
    private String auditTime;
    /**
     * 审核备注
     */
    private String auditRemark;
    /**
     * 撤销备注
     */
    private String cancelRemark;
    /**
     * 所属组织
     */
    private String organisation;

    @Override
    public void loadData(Object... objects) {
        Activity activity = (Activity) objects[0];
        BeanUtils.copyProperties(activity, this);
        DingTalkService dingTalkService = SpringWebTool.getBean(DingTalkService.class);
        try {
            String deptName = dingTalkService.getDeptName(activity.getUserId());
            if (StringUtils.isNotBlank(deptName)) {
                this.setOrganisation(deptName);
            } else {
                this.setOrganisation("");
            }
            String activityOrgs = dingTalkService.getActivityOrgs(activity.getActivityOrgs());
            if (StringUtils.isNotBlank(activityOrgs)) {
                this.setActivityOrgs(activityOrgs);
            } else {
                this.setActivityOrgs("");
            }
        } catch (ApiException e) {
            e.printStackTrace();
        }
    }
}
